草庐IT

STRB 有效位

全部标签

c++ - 使用 boost 检查 std::string 是否是有效的 uuid

我想使用boost检查给定的字符串是否是有效的UUID。这是我通过查看boost网站上的文档得出的结论:voidvalidate_uuid(conststd::string&value){try{boost::uuids::string_generatorstringGenerator;(void)stringGenerator(value);}catch(conststd::exception&ex){//...}}但是,这并不总是有效。如果我使用对于有效UUID来说太短的字符串调用该函数,则会按预期抛出异常。但是,如果我使用无效的UUID(例如00000000-0000-0000-

c++ - 为什么重写方法并将 const 添加到参数类型有效?

这个问题在这里已经有了答案:FunctionswithconstargumentsandOverloading(3个答案)关闭3年前。考虑以下示例:#include#includeclassBase{public:virtualvoidfunc(inta){}};classDerived:publicBase{public:voidfunc(constinta)override{}};intmain(){Derivedd;d.func(1);return1;}我重写了func方法,但将const添加到参数中,在这种情况下,链接器应该尖叫说出现了问题。要么函数没有被覆盖,要么函数参数不应

c++ - 是否可以使用 boost::bind 来有效地连接函数?

假设我有一个带有任意签名的boost::function类型CallbackType。是否可以使用boost::bind组合一个函数,该函数采用与CallbackType相同的参数但连续调用两个仿函数?我对任何可能的解决方案持开放态度,但这里有一个.........使用一些魔法模板的假设示例:TemplateclassMyClass{public:CallbackTypedoBoth;MyClass(CallbackTypecallback){doBoth=bind(magic,protect(bind(&MyClass::alert,this)),protect(callback))

c++ - 检查 Gdiplus::Bitmap::FromFile 是否返回了有效的位图

我曾假设如果文件不是有效图像,Gdiplus::Bitmap::FromFile会返回NULL,但即使我向它传递一个doc文件,它也会返回一个非NULL。似乎没有用于Bitmap或类似方法的IsValid方法。那么我怎么知道Gdiplus::Bitmap::FromFile是否真的加载了有效图像? 最佳答案 事实证明,Bitmap::GetLastStatus()正是我要找的,如果加载操作成功,它返回Gdiplus::Ok,否则返回错误代码如果失败了。 关于c++-检查Gdiplus::

c++ - 为什么返回对自动变量的引用有效?

我目前正在阅读有关C++的内容,我读到当使用按引用返回时,我应该确保我不会返回对将超出范围的变量的引用函数返回。那么,为什么在Add函数中对象cen是通过引用返回的,而且代码工作正常?!代码如下:#includeusingnamespacestd;classCents{private:intm_nCents;public:Cents(intnCents){m_nCents=nCents;}intGetCents(){returnm_nCents;}};Cents&Add(Cents&c1,Cents&c2){Centscen(c1.GetCents()+c2.GetCents());r

c++ - 编译器选择错误的重载而不是有效的重载

看看这段代码:#include#includetemplateautosearch_with(RandItbegin,RandItend,constT&value,Pred&&pred)noexcept{//...returnbegin;}templateautosearch_with(RandItbegin,RandItend,constT&value)noexcept{returnsearch_with(begin,end,value,std::less{});}templateautosearch_with(constArray&array,constT&value,Pred&&

c++ - 转换为基类有效性

假设我有一个名为Base的类和一个从它派生的名为SuperBase的类。假设add接受了一个Base*,那么这些是否有效:SuperBase*super=newSuperBase;bases.add(super);或者SuperBase*super=newSuperBase;bases.add((Base*)super); 最佳答案 只要SuperBase通过从派生到基的隐式转换公开派生自Base,第一个就可以工作:structbase{virtual~base(){}};structderived:base{};base*b=ne

c++ - 有效地将 unsigned short 转换为 char*

什么是将unsignedshort转换为char*(即将25转换为'25')的高效、可移植的方法。我想避免涉及(std::string)字符串之类的事情。在这种情况下,性能很重要,因为这种转换需要快速且经常发生。我正在研究诸如使用sprintf之类的事情,但想探索任何和所有想法。 最佳答案 首先,正确地做事,然后快速地做事——只有在您确定某段代码性能不佳时才进行优化。snprintf()放入缓冲区将执行您想要的操作。这是最快的解决方案吗?一点也不。但它是最简单的之一,足以让您的代码进入工作状态。从那里开始,如果您发现对snprint

c++ - 为什么 #include "stdio.h"有效?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whatisthedifferencebetween#includeand#include“filename”?为什么当我写以下内容时编译器不报错:#include"stdio.h"不应该吗#include相反,因为stdio.h实际上存储在库文件夹中而不是翻译单元的文件夹中?为什么它仍然有效?

c++ - 预处理器输出文件是否为有效的 C/C++ 文件

我有2个文件作为qwe.h#ifndefQWE_H#defineQWE_H//#includeintasd();#endifqwe.cc#include"qwe.h"intasd(){std::cout仅作为g++-Eqwe.cpp>op4运行预处理器给出以下输出#1"qwe.cpp"#1""#1""#1"qwe.cpp"#1"qwe.h"1intasd();#2"qwe.cpp"2intasd(){std::cout预处理器输出不应该是有效的C/C++文件吗?语句“#intstringint”的含义是什么 最佳答案 它们是行号,用